home *** CD-ROM | disk | FTP | other *** search
/ The Glitch Apple Disk Collection / 2014.glitch.apple.collection.zip / indexed / MISSINGR.DSK / MAGIC IN USE.bas < prev    next >
BASIC Source File  |  2014-09-09  |  18KB  |  217 lines

  1. 1  ONERR  GOTO 9000
  2. 5 CZ$ =  CHR$(26) + CHR$(15) + CHR$(2): PRINT CZ$; CHR$(15); CHR$(3)
  3. 10 D$ =  CHR$(13) + CHR$(4):XD =  PEEK(33588) + PEEK(33589) *256:MD =  PEEK(33590) + PEEK(33591) *256
  4. 20  GOTO 6000
  5. 25 DT = DV +DP: IF DT >3  THEN DT = DT -4
  6. 28  RETURN 
  7. 30 DV =  INT(DT/16):DT = DT -DV *16: RETURN 
  8. 80  CALL  PEEK(33578) + PEEK(33579) *256:IN =  PEEK(9): RETURN 
  9. 85  CALL  PEEK(33580) + PEEK(33581) *256:IN =  PEEK(9): RETURN 
  10. 90  VTAB 3: HTAB 43 - LEN(IN$): PRINT IN$;: FOR I = 1 TO 500: NEXT : VTAB 3: HTAB 43 - LEN(IN$): PRINT IN$;: RETURN 
  11. 98 X =  FRE(0): RESTORE :I =  PEEK(32768 +K): FOR CY = 1 TO I: FOR X = 0 TO 3: READ FG$(X): NEXT X,CY: RETURN 
  12. 100 V =  PEEK(32777 +K):H =  PEEK(32778 +K): RETURN 
  13. 120  GOSUB 98
  14. 124  GOSUB 100:V = V +(V <4) -(V >20):H = H +(H <1) -(H >38):DT =  PEEK(32775 +K): GOSUB 130: IF DT >3  THEN DT = DT -8
  15. 125  IF V <4  THEN  POKE 32777 +K,6:V = 6
  16. 128  VTAB V: HTAB H: PRINT FG$(DT);: RETURN 
  17. 130 DV =  INT(DT/16):DT = DT -DV *16: RETURN 
  18. 150 V =  PEEK(K +2):H =  PEEK(K +1):DP =  PEEK(K +3): RETURN 
  19. 200 V1 = V -1:H1 = H:V2 = V1:H2 = H1:P = 2: VTAB V1: HTAB H1 +1: PRINT "<CTRL-A>1?<CTRL-A>0";
  20. 210  VTAB V1: HTAB H1 +1: PRINT "<CTRL-A>1?<CTRL-A>0";: VTAB V2: HTAB H2 +1: PRINT "<CTRL-A>1?<CTRL-A>0";
  21. 212 V2 = V1:H2 = H1: GOSUB 85
  22. 215  IF IN = 210  OR IN = 207  THEN V1 = V2 -P: IF V1 <1  THEN V1 = 1
  23. 220  IF IN = 196  OR IN = 204  THEN V1 = V2 +P: IF V1 >23  THEN V1 = 23
  24. 225  IF IN = 198  OR IN = 208  THEN H1 = H2 +P: IF H1 >38  THEN H1 = 38
  25. 230  IF IN = 197  OR IN = 203  THEN H1 = H2 -P: IF H1 <1  THEN H1 = 1
  26. 240  IF IN < >160  THEN 210
  27. 250  VTAB V1: HTAB H1 +1: PRINT "<CTRL-A>1?<CTRL-A>0";: RETURN 
  28. 260  IF  PEEK(MB) < >R1  THEN MB = MB +8: IF MB < = 33530  THEN 260
  29. 265  RETURN 
  30. 300  IF  PEEK(33021) = 1  THEN P = PN: GOTO 320
  31. 305  POKE 9,PN: CALL  PEEK(33574) + PEEK(33575) *256:P =  PEEK(5): IF  PEEK(10) < >0  THEN P = PN: GOTO 320
  32. 310 IN$ = " <CTRL-S>YOU OR <CTRL-S>PLAYER #" + STR$( INT(P/32 +1)): GOSUB 380: GOSUB 85:IN = IN -176: IF IN < >P/32 +1  THEN P = PN
  33. 320  RETURN : REM  ADJACENCY
  34. 380  VTAB 21: HTAB 1: PRINT CZ$; CHR$(6);: HTAB 20 - LEN(IN$)/2: PRINT  CHR$(15); CHR$(3);IN$;: FOR X = 1 TO 1500: NEXT X: VTAB 21: HTAB 20 - LEN(IN$)/2: PRINT IN$;: RETURN 
  35. 450  IF RL <0  THEN RL = 1
  36. 455 RL = RL +1: IF RL <RH +1  AND RL <80  THEN DX =  PEEK(33104 +RL): IF DX >128  THEN 465
  37. 460  IF RL <RH +1  AND RL <80  THEN 455
  38. 465  RETURN 
  39. 500 RX =  INT( RND(1) *20 +1): IF RX <20 -AC -LV  THEN IN$ = "<CTRL-I><CTRL-S>HE MISSED!<CTRL-N>": GOSUB 380: GOTO 590
  40. 508 IN$ = "<CTRL-I><CTRL-S>HE <CTRL-S>HIT!<CTRL-N>": GOSUB 380: IF RX = 20  THEN DM = DM *4:IN$ = "<CTRL-I><CTRL-S>CRITIAL!<CTRL-N>": GOSUB 380
  41. 510 DX =  INT( RND(1) *DM +1):RX =  PEEK(HP) -DX
  42. 520  POKE HP,RX: GOTO 590
  43. 590  RETURN 
  44. 600 RX =  INT( RND(1) *20 +1): IF RX <20 -AC -LV  THEN IN$ = "<CTRL-I><CTRL-S>MISSED!<CTRL-N>": GOSUB 90: GOTO 690
  45. 608 IN$ = "<CTRL-I><CTRL-S>YOU <CTRL-S>HIT!<CTRL-N>": GOSUB 90: IF RX = 20  THEN DM = DM *2:IN$ = "<CTRL-I><CTRL-S>CRITIAL!<CTRL-N>": GOSUB 90
  46. 610 DX =  INT( RND(1) *DM +1):RX =  PEEK(HP) -DX: IF RX < = 0  THEN  POKE 32782 +PN, PEEK(32782 +PN) +1: GOTO 650
  47. 620  POKE HP,RX: GOTO 690
  48. 650  POKE MB,0:IN$ = "<CTRL-I><CTRL-S>IT DIES!<CTRL-N>": GOSUB 90:K = DP: GOSUB 150:K = PN: POKE 250,DP: POKE 251,H: POKE 253,V: CALL XD
  49. 660  VTAB 2: HTAB 1: PRINT CZ$;"     <CTRL-C>          <CTRL-C>        "; CHR$(15); CHR$(3)
  50. 690  RETURN 
  51. 800 RX =  INT( RND(1) *20 +1): IF RX <20 -MG -LV  THEN IN$ = "<CTRL-I><CTRL-S>FAILED!<CTRL-N>": GOSUB 90: GOTO 690
  52. 810  GOSUB 90:RX = DM *LV +MG: IF RX <1  THEN RX = 1
  53. 820  POKE MB +6,RX: RETURN 
  54. 1000  POKE 250,D: POKE 251,H -1: POKE 253,V -1: POKE 252,H1 -1: POKE 254,V1 -1: CALL MD: RETURN 
  55. 2000 V1 = V1 *7:H1 = H1 *7:V2 = V *7:H2 = (H +1) *7 -4
  56. 2010  HPLOT H2,V2 TO H1,V1: FOR T = 0 TO 500: NEXT : HCOLOR= DX: HPLOT H2,V2 TO H1,V1: RETURN 
  57. 3000  GOSUB 100: GOSUB 200
  58. 3030 MB = 33408
  59. 3040  GOSUB 260: IF MB >33530  THEN 3175
  60. 3050  IF V1 < PEEK(MB +2) -2  OR V1 > PEEK(MB +2) + INT( PEEK(MB +4)/16) +1  THEN 3090
  61. 3060  IF H1 < PEEK(MB +1) -1  OR H1 > PEEK(MB +1) +( PEEK(MB +4) - INT( PEEK(MB +4)/16) *16) +3  THEN 3090
  62. 3070 I = MB: GOTO 3150
  63. 3090 MB = MB +8: IF MB <33530  THEN 3040
  64. 3100  GOTO 3175
  65. 3150 MX =  PEEK(MB +5):DP = MB:MF = (MX -1) *8:HP = MB +7
  66. 3155 DT =  PEEK(33287 +MF): GOSUB 30:MT = DV:MG = DT:AC =  PEEK(33281 +MF): IF AC >127  THEN AC = AC -256
  67. 3160  RETURN 
  68. 3175 MB = 0:IN$ = "<CTRL-I><CTRL-S>NO MONSTER<CTRL-N>": GOSUB 90
  69. 3200  POP : RETURN 
  70. 3500 P = ( PEEK(33021) + PEEK(33022) +1) *32
  71. 3510 P = P -32: IF P < = 0  THEN  POP : GOTO 10015
  72. 3520  IF  PEEK(32776 +P) < >R1  THEN 3510
  73. 3530 DT =  PEEK(32775 +P): GOSUB 30: IF DT >2  THEN 3510
  74. 3540 K = P: GOSUB 100:V1 = V:H1 = H:H =  PEEK(MB +1):V =  PEEK(MB +2):AC =  PEEK(32789 +P):HP = 32791 +P:LV =  PEEK(33394): RETURN 
  75. 4000 DV = 0: GOSUB 100: IF H +V < = 14  THEN DV = 3: GOTO 4050
  76. 4010  IF H -V =  >22  THEN DV = 1: GOTO 4050
  77. 4020  IF V < = 6  THEN DV = 4: GOTO 4050
  78. 4030  IF V =  >15  THEN DV = 2
  79. 4040  IF   NOT DV  THEN 4100
  80. 4050 DP =  PEEK(32779 +PN): GOSUB 25
  81. 4100  RETURN 
  82. 6000 PN =  PEEK(32992):K = PN:P =  PEEK(33009 +PN/32):R1 =  PEEK(33020): POKE 33009 +PN/32,0:LV =  PEEK(32780 +PN): REM  <CTRL-C><CTRL-C><CTRL-S>CLEAR <CTRL-S>MAGIC <CTRL-S>USE <CTRL-C>
  83. 6015  IF P >16  THEN 6025
  84. 6020  ON P GOSUB 6050,6250,6400,6200,6100,6350,6150,6750,6450,6500,6550,6600,6650,6700,6300,6800: REM  <CTRL-C>MAGIC SPELLS<CTRL-C>
  85. 6022  GOTO 8000
  86. 6025 P = P -16
  87. 6030  ON P GOSUB 7100,6900,6950,6200,7050,7700,7150,6900,7250,6850,6900,7400,7450,7100,7550,6900: REM  <CTRL-C><CTRL-C>POTIONS AND RINGS<CTRL-C>
  88. 6040  GOTO 8000
  89. 6050  GOSUB 3000:D = 20: HCOLOR= 3: GOSUB 1000:DM = 4:PH = 2: GOSUB 600:EP = 1 *DX +1: REM  MAGIC MISSILE
  90. 6095  RETURN 
  91. 6100  GOSUB 3000:D = 21: GOSUB 1000:DM = 2:PH = 1: GOSUB 600:EP = 1 *DX +1: REM  <CTRL-C><CTRL-C><CTRL-S>DANCING <CTRL-S>LIGHTS <CTRL-C>
  92. 6145  RETURN 
  93. 6150  GOSUB 4000:DN = DT:DX = DV: IF  PEEK(33016 +DN) < >1  THEN  IF  PEEK(33016 +DN) < >4  THEN 6195
  94. 6155  IF  PEEK(33024 + PEEK(33020)) < >255  THEN 6170
  95. 6160  POKE 8,DN: CALL  PEEK(33570) + PEEK(33571) *256:R1 =  PEEK(8):DN = DN +2 -4 *(DN >1)
  96. 6170 DP =  PEEK(33024 +R1): POKE 33616,DP: CALL  PEEK(33568) + PEEK(33569) *256: POKE 33616 +DN,0: POKE 33620 +DN,1: CALL  PEEK(33584) + PEEK(33585) *256:DP =  PEEK(33616): POKE 33016 +DT,2
  97. 6175  POKE 33024 +R1,DP: HCOLOR= 0:X = 33536 +(DX +1 -4 *(DX >1)) *4: CALL  PEEK(X +2) + PEEK(X +3) *256: HCOLOR= 3: CALL  PEEK(X) + PEEK(X +1) *256
  98. 6195  RETURN : REM <CTRL-C><CTRL-C><CTRL-S>WIZARD <CTRL-S>LOCK<CTRL-C>
  99. 6200  GOSUB 3000: IF MT < >1  THEN IN$ = "<CTRL-I><CTRL-S>NOT A PERSON<CTRL-N>": GOSUB 90: GOTO 6245
  100. 6210  HCOLOR= 2:DX = 0: GOSUB 2000:PH = 1:DM = LV:IN$ = "<CTRL-I><CTRL-S>CHARMED!<CTRL-N>": GOSUB 800:EP = DX
  101. 6245  RETURN : REM <CTRL-C><CTRL-C><CTRL-S>CHARM <CTRL-S>PERSON<CTRL-C>
  102. 6250 AC =  PEEK(32789 +PN):RX =  INT( RND(1) *4 +1):AC = AC -RX: IF AC <0  THEN AC = AC +256
  103. 6260 EP = RX: POKE 32789 +PN,AC:PH = 1: REM  <CTRL-C><CTRL-C><CTRL-S>SHIELD<CTRL-C>
  104. 6295  RETURN 
  105. 6300  GOSUB 4000: POKE 8,DT: CALL  PEEK(33570) + PEEK(33571) *256:R0 =  PEEK(8): VTAB 21: PRINT CZ$; CHR$(6); TAB( 5);: IF R0 = 0  THEN IN$ = "<CTRL-S>YOU SEE NOTHING": GOTO 6320
  106. 6305 A$ = "":B$ = A$: PRINT "<CTRL-B><CTRL-S>IN ROOM #";R0;" THERE IS ";: IF  PEEK(33104 +R0) >0  THEN A$ = "<CTRL-S>TREASURE "
  107. 6310  IF  PEEK(33184 +R0) >0  THEN B$ = "A <CTRL-S>MONSTER ": IF  LEN(A$) >1  THEN A$ = A$ +"<CTRL-C>AND "
  108. 6315 IN$ = A$ +B$: IF  LEN(IN$) <3  THEN IN$ = "NOTHING "
  109. 6320  PRINT IN$;"<CTRL-D>": FOR I = 1 TO 1000: NEXT :PH = 5: VTAB 21: HTAB 1: PRINT  CHR$(6);: VTAB 1: RETURN 
  110. 6345  REM  <CTRL-C><CTRL-C><CTRL-S>CLAIRVOYANCE <CTRL-C>
  111. 6350  GOSUB 3000:D = 23: GOSUB 1000:PH = 3:DM =  INT( RND(1) *10 +1):IN$ = "<CTRL-I><CTRL-S>ASLEEP!<CTRL-N>": GOSUB 800:EP = DM
  112. 6395  RETURN : REM  <CTRL-C><CTRL-C><CTRL-S>SLEEP<CTRL-C>
  113. 6400  POKE 9,PN: CALL  PEEK(33564) + PEEK(33565) *256:PH = 5: PRINT  CHR$(15); CHR$(3);: IF  PEEK(11) = 1  THEN K =  PEEK(5): GOSUB 120:DT = 3: GOSUB 128:K = PN
  114. 6445  RETURN : REM  <CTRL-C><CTRL-C><CTRL-S>HEAL LT WOUNDS <CTRL-C>
  115. 6450  GOSUB 3000:PH = 3
  116. 6460 D = 22: GOSUB 1000:DM = 6: GOSUB 600:EP = 2 *DX: REM   <CTRL-C><CTRL-C><CTRL-S>FIRE BALL<CTRL-C>
  117. 6495  RETURN 
  118. 6500  GOSUB 3000: IF MT < >1  THEN IN$ = "<CTRL-I><CTRL-S>NOT A PERSON<CTRL-N>": GOSUB 90: GOTO 6545
  119. 6510  HCOLOR= 6:DX = 4: GOSUB 2000:PH = 2:DM =  INT( RND(1) *10 +1):IN$ = "<CTRL-I><CTRL-S>HELD!<CTRL-N>": REM  <CTRL-C><CTRL-C><CTRL-S>HOLD <CTRL-S>PERSON<CTRL-C>
  120. 6520 EP = DM:PH = 2: GOSUB 800
  121. 6545  RETURN 
  122. 6550  GOSUB 3000: HCOLOR= 5:DX = 4: GOSUB 2000:PH = 4:DM = 6: GOSUB 600:EP = 1 *DX +1: REM <CTRL-C><CTRL-C><CTRL-S>LIGHTNING BOLT <CTRL-C>
  123. 6595  RETURN 
  124. 6600  GOSUB 300:DT =  PEEK(32774 +P): GOSUB 30:DT = DV + INT( RND(1) *4 +1): POKE 32774 +P,DV *16 +DT:PH = 5:EP =  INT(DT -DV)/2: REM  <CTRL-C><CTRL-S>STRIKING<CTRL-C>
  125. 6645  RETURN 
  126. 6650  GOSUB 300:DT =  PEEK(32787 +P): POKE 33616,DT: CALL  PEEK(33568) + PEEK(33569) *256: IF  PEEK(33620) = 0  THEN 6690: REM <CTRL-C><CTRL-C><CTRL-S>REMOVE CURSE<CTRL-C>
  127. 6670 DT = DT -16: POKE 32787 +P,DT
  128. 6690 PH = 3: RETURN 
  129. 6700  GOSUB 3000: IF MT < >3  THEN IN$ = "<CTRL-I><CTRL-S>NOT A <CTRL-S>MONSTER!<CTRL-N>": GOSUB 90: GOTO 6745
  130. 6710  GOTO 6210
  131. 6745  RETURN : REM  <CTRL-C><CTRL-C><CTRL-S>CHARM MONSTER<CTRL-C>
  132. 6750 RL = R1 -5:DX = 0:RH = R1 +5 *LV
  133. 6755  GOSUB 450: IF RL =  >80  OR RL >RH  THEN IN$ = "<CTRL-S>NO RING FOUND": GOSUB 380: GOTO 6770
  134. 6760  IF DX - INT(DX/16) *16 < >0  THEN 6755
  135. 6765 IN$ = "<CTRL-S>THERE<CTRL-B> IS A <CTRL-S>RING IN<CTRL-C><CTRL-S>ROOM # <CTRL-D>" + STR$(RL): GOSUB 380:EP =  ABS((RL -R1)/LV)
  136. 6770  FOR T = 1 TO 1000: NEXT :PH = 4: VTAB 21: HTAB 1: PRINT  CHR$(6): RETURN : REM <CTRL-C><CTRL-C><CTRL-S>FIND RING<CTRL-C>
  137. 6800  GOSUB 100:V1 = V:H1 = H +1: GOSUB 3030:DM = 3 *LV:PH =  PEEK(33002): GOSUB 600:EP = 2 *DX/LV:P =  PEEK(32791 +PN) -1:P = P +256 *(P <0): POKE 32791 +PN,P: REM <CTRL-C><CTRL-C><CTRL-S>TOUCH OF DEATH<CTRL-C>
  138. 6845  RETURN 
  139. 6850  POKE 32796 +PN,1: REM   <CTRL-C><CTRL-C> <CTRL-S>FIRE RESISTANCE<CTRL-C>
  140. 6895  RETURN 
  141. 6900 DT =  PEEK(32775 +PN): GOSUB 30:DT = DT +8 *(DT <8)
  142. 6910  POKE 32775 +PN,DV *16 +DT:EP = 5:PH = 3: REM  <CTRL-C><CTRL-C><CTRL-S>INVISIBILITY, <CTRL-S>AMULET OF <CTRL-S>SECRECY, OR <CTRL-S>PROTECTION SPELL<CTRL-C>
  143. 6945  RETURN 
  144. 6950  GOSUB 3000: IF MT < >2  THEN IN$ = "<CTRL-I><CTRL-S>NOT AN UNDEAD!<CTRL-N>": GOSUB 90: GOTO 6245
  145. 6960  GOTO 6210: REM   <CTRL-C><CTRL-C><CTRL-S>CHARM UNDEAD<CTRL-C>
  146. 7050  POKE 33002, INT( RND(1) *4 +6): REM     SPEED
  147. 7095  RETURN 
  148. 7100 RL = R1 -5:DX = 0:RH = 5 *LV
  149. 7110  GOSUB 450: IF RL =  >80  OR RL >RH +1  THEN IN$ = "<CTRL-S>NO HIGH TREASURE FOUND": GOSUB 380: GOTO 6770
  150. 7120 IN$ = "<CTRL-S>A HIGH<CTRL-B> TREASURE IS IN<CTRL-C><CTRL-S>ROOM #<CTRL-D> " + STR$(RL):EP =  ABS((RL -R1)/LV): REM <CTRL-C><CTRL-C><CTRL-S>FIND <CTRL-S>TREASURE<CTRL-C>
  151. 7130  GOSUB 380
  152. 7145  RETURN 
  153. 7150  GOSUB 3000:TH = H1:TV = V1:PH = 5: FOR WF = 1 TO 3: GOSUB 6460:H1 = TH:V1 = TV:K = PN: GOSUB 100: IF  PEEK(MB) = 0  AND WF <3  THEN  GOSUB 3000:TH = H1:TV = V1
  154. 7195  NEXT WF: RETURN : REM  <CTRL-C><CTRL-C><CTRL-S>WAND OF FIREBALLS<CTRL-C>
  155. 7250  POKE 9,PN: CALL  PEEK(33562) + PEEK(33563) *256:PH = 5: PRINT  CHR$(15); CHR$(3);: IF  PEEK(11) = 1  THEN K =  PEEK(5): GOSUB 120:DT = 3: GOSUB 128:K = PN
  156. 7295  RETURN : REM <CTRL-C><CTRL-C><CTRL-S>RING REGENERATION<CTRL-C>
  157. 7400  REM    RING STORING
  158. 7445  RETURN 
  159. 7450 DX =  PEEK(32791 +PN):DX = DX -1: IF DX <0  THEN DX = DX +256: REM    RING WEAKNESS
  160. 7495  POKE 32791 +PN,DX: RETURN 
  161. 7550 P =  PEEK(32795 +PN): POKE 32795 +PN,0:EP =  PEEK(32794 +PN): POKE 32794 +PN,EP -1 *(EP >0): IF EP = 0  THEN  POKE 32787 +PN, PEEK(32787 +PN) -64
  162. 7555  ON P GOSUB 6350,6550,6800,6900,7100,7600,7650,7250
  163. 7560 PH = 0:EP = 0: RETURN : REM <CTRL-C><CTRL-C><CTRL-S>RING OF THE <CTRL-S>DJINN<CTRL-C>
  164. 7600 R0 =  INT( RND(1) *80 +1): IF R0 = R1  THEN 7600
  165. 7610  FOR I = 32776 TO 32904  STEP 32: IF  PEEK(I) = R1  THEN  POKE I,R0
  166. 7620  NEXT I: POKE 33020,0: RETURN : REM <CTRL-C><CTRL-C><CTRL-S>TELEPORT<CTRL-C>
  167. 7650 I = 0
  168. 7655 I = I +1: IF  PEEK(33024 +I) < >5  THEN 7655
  169. 7660  IF I >8  THEN 7445
  170. 7665 R0 = I: GOTO 7610: REM <CTRL-C><CTRL-C><CTRL-S>ESCAPE<CTRL-C>
  171. 7700 DX =  INT( RND(1) *8 +1): ON DX GOTO 7710,7720,7730,7710,7730,7720,7730,7710
  172. 7710 IN$ = "<CTRL-S>YOU'RE CUTE!": GOTO 7770
  173. 7720 DP = 241: GOTO 7740
  174. 7730 DP = 209
  175. 7740 K = 0: FOR I = 0 TO 79: IF  PEEK(I +33184) = DP  OR  PEEK(I +33184) = DP -1  THEN K = I:I = 79
  176. 7745  NEXT I:IN$ = "<CTRL-S>THE " + MID$ ("<CTRL-S>EVIL <CTRL-S>MAGE <CTRL-S>HOMONCULUS ",1 +12 *(DP = 209),12) +" IS ": IF K = 0  THEN IN$ = IN$ +"MISSING!": GOTO 7770
  177. 7750  IF K = R1 +1  OR K = R1 -1  OR K = R1 +8  OR K = R1 -8  THEN IN$ = IN$ +"NEXT DOOR!": GOTO 7770
  178. 7755  IF K <R1 +10  AND K >R1 -10  THEN IN$ = IN$ +"NEARBY!": GOTO 7770
  179. 7760  IF K >R1 +10  THEN IN$ = IN$ +"SOUTHWARD!": GOTO 7770
  180. 7765 IN$ = IN$ +"NORTHWARD!"
  181. 7770  GOSUB 380: RETURN 
  182. 8000 P =  PEEK(32782 +PN) +EP:HP =  PEEK(32790 +PN):LV =  PEEK(32780 +PN):DT =  PEEK(32774 +PN): GOSUB 30:DM = (DV +1) *16 +DT
  183. 8001  POKE 32782 +PN,P -256 *(P >255): POKE 32993, PEEK(32993) +PH: IF P >250  THEN EP = P -250: POKE 32774 +PN,DM: POKE 32782 +PN,EP: POKE 32790 +PN, INT(HP/LV) *(LV +1): POKE 32780 +PN,LV +1 -(LV >14)
  184. 8002 K = PN:P =  PEEK(32793 +PN): POKE 32793 +PN,0: IF P >0  THEN 6020
  185. 8005 DT =  PEEK(33184 +R1): GOSUB 30: IF DV = 15  THEN 10000
  186. 8010  POKE 32996,237: VTAB 1: PRINT  CHR$(15); CHR$(3);D$;"RUNPROG2"
  187. 9000  IF  PEEK(222) = 255  THEN  RESUME 
  188. 9010  CLEAR : GOTO 5
  189. 10000  POKE 33616, PEEK(33400): POKE 33624, PEEK(33401): CALL  PEEK(33568) + PEEK(33569) *256:MB = 33408
  190. 10005  GOSUB 260: IF  PEEK(MB +5) < >15  AND MB <33530  THEN 10005
  191. 10010 RX =  INT( RND(1) *16): IF  PEEK(33616 +RX) = 1  THEN  ON RX +1 GOTO 10275,10175,10125,10015,10050,10200,10075,10150,10030,10015,10150,10030,10100,10015,10275,10175
  192. 10015  GOTO 8010
  193. 10030  GOSUB 3500:D = 20: GOSUB 1000:DM = 4: GOSUB 500: GOTO 10015
  194. 10050 AC =  PEEK(33393):RX =  INT( RND(1) *4 +1):AC = AC -RX: IF AC <0  THEN AC = AC +256
  195. 10055  POKE 33393,AC: GOTO 10015
  196. 10075 RX =  INT( RND(1) * PEEK(33394) +4): IF RX >127  THEN RX = 127
  197. 10080  IF RX < PEEK(MB +7)  THEN RX =  PEEK(MB +7)
  198. 10085  POKE MB +7,RX: GOTO 10015
  199. 10100  GOSUB 3500:D = 21: GOSUB 1000:DM = 2: GOSUB 500: GOTO 10015
  200. 10125  GOSUB 3500: IF  INT( RND(1) *10 +1) < PEEK(32780 +P)  THEN 10145
  201. 10130 IN$ = "<CTRL-S>PLAYER #" + STR$( INT(P/32 +1)) +" IS ASLEEP!": GOSUB 380:DT =  PEEK(32775 +P): GOSUB 30: POKE 32775 +P,DV *16 +11
  202. 10145  GOTO 10015
  203. 10150  GOSUB 3500:D = 22: GOSUB 1000:DM = 6: GOSUB 500: GOTO 10015
  204. 10175  GOSUB 3500: IF  PEEK(32787 +P) = 0  THEN 10175
  205. 10185  POKE 33616, PEEK(32787 +P): CALL  PEEK(33568) + PEEK(33569): FOR CY = 7 TO 0  STEP  -1: IF  PEEK(33616 +CY) = 0  THEN 10195
  206. 10190  POKE 33616 +CY,0: CALL  PEEK(33584) + PEEK(33585) *256: POKE 32787 +P, PEEK(33616):CY = 0:IN$ = "<CTRL-S>SOMEONE HAS LOST A RING!": GOSUB 380
  207. 10195  NEXT CY: GOTO 10015
  208. 10200  GOSUB 3500: HCOLOR= 5:DX = 4: GOSUB 2000:DM = 6: GOSUB 500: GOTO 10015
  209. 10275 R0 =  INT( RND(1) * PEEK(33394) +1): IF R0 = R1  OR  PEEK(33024 +R0) = 255  OR  PEEK(33184 +R0) >0  OR R0 <0  OR R0 >79  THEN 10275
  210. 10278 K = MB: GOSUB 150: POKE 250,DP: POKE 251,H: POKE 253,V: CALL XD
  211. 10280  POKE 33184 +R0,240: POKE 33184 +R1,0: POKE 33104 +R0, PEEK(33104 +R1): POKE 33104 +R1,0: POKE MB,R0:IN$ = "<CTRL-S>HE'S TELEPORTING OUT!": GOSUB 380: GOTO 10015
  212. 15002  DATA  "<CTRL-B><CTRL-A>1<CTRL-K>H <CTRL-C>FS<CTRL-C>LG<CTRL-D>","<CTRL-B><CTRL-A>1<CTRL-S>HS<CTRL-C><CTRL-S>FA<CTRL-C><CTRL-S>L<CTRL-S>G<CTRL-D>","<CTRL-B><CTRL-A>1 0<CTRL-C>12<CTRL-C>34<CTRL-D>","<CTRL-B><CTRL-A>1  <CTRL-C> $%<CTRL-C>&'(<CTRL-D>","<CTRL-B><CTRL-A>1<CTRL-L>H <CTRL-C><CTRL-S>W<CTRL-S>T<CTRL-C><CTRL-S>ZG<CTRL-D>","<CTRL-B><CTRL-A>1<CTRL-L>HT<CTRL-C><CTRL-S>WF<CTRL-C><CTRL-S>Z<CTRL-S>G<CTRL-D>","<CTRL-B><CTRL-A>1 5<CTRL-C>67<CTRL-C>89<CTRL-D>","<CTRL-B><CTRL-A>1  <CTRL-C> $%<CTRL-C>&'-<CTRL-D>"
  213. 15003  DATA  "<CTRL-B><CTRL-A>1<CTRL-K>E <CTRL-C>B<CTRL-L>B<CTRL-C><CTRL-S>KW<CTRL-D>","<CTRL-B><CTRL-A>1<CTRL-S>DE<CTRL-C>DC<CTRL-C><CTRL-S>KW<CTRL-D>","<CTRL-B><CTRL-A>1 )<CTRL-C>;+<CTRL-C>8/<CTRL-D>","<CTRL-B><CTRL-A>1  <CTRL-C> $%<CTRL-C>&'*<CTRL-D>","<CTRL-B><CTRL-A>1<CTRL-K>  <CTRL-C>NO<CTRL-C>PQ<CTRL-D>","<CTRL-B><CTRL-A>1 <CTRL-L>X<CTRL-C><CTRL-S>NP<CTRL-C><CTRL-K>PQ<CTRL-D>","<CTRL-B><CTRL-A>1<CTRL-K>  <CTRL-C> M<CTRL-C>JR<CTRL-D>","<CTRL-B><CTRL-A>1  <CTRL-C> $%<CTRL-C>&'#<CTRL-D>"
  214. 15004  DATA  "<CTRL-B><CTRL-A>1<CTRL-K>H <CTRL-C>FA<CTRL-C>LG<CTRL-D>","<CTRL-B><CTRL-A>1<CTRL-S>HX<CTRL-C><CTRL-S>FA<CTRL-C><CTRL-K>LG<CTRL-D>","<CTRL-B><CTRL-A>1 0<CTRL-C>@2<CTRL-C>34<CTRL-D>","<CTRL-B><CTRL-A>1  <CTRL-C> $%<CTRL-C>&'#<CTRL-D>","<CTRL-B><CTRL-A>1<CTRL-S>ES<CTRL-C><CTRL-S>BY<CTRL-C><CTRL-S>KW<CTRL-K><CTRL-D>","<CTRL-B><CTRL-A>1<CTRL-S>EM<CTRL-C><CTRL-S>BZ<CTRL-C><CTRL-S>KW<CTRL-K><CTRL-D>","<CTRL-B><CTRL-A>1 )<CTRL-C><CTRL-L>I<CTRL-K>+<CTRL-C>8/<CTRL-D>","<CTRL-B><CTRL-A>1  <CTRL-C> $%<CTRL-C>&'(<CTRL-D>"
  215. 15005  DATA  "<CTRL-B><CTRL-A>1  <CTRL-C><CTRL-S>NO<CTRL-C><CTRL-K>PQ<CTRL-D>","<CTRL-B><CTRL-A>1<CTRL-S> Q<CTRL-C><CTRL-S>NR<CTRL-C><CTRL-K>PQ<CTRL-D>" ,"<CTRL-B><CTRL-A>1<CTRL-K>  <CTRL-C>IM<CTRL-C>JR<CTRL-D>","<CTRL-B><CTRL-A>1  <CTRL-C> $%<CTRL-C>&'(<CTRL-D>","<CTRL-B><CTRL-A>1<CTRL-K>H <CTRL-C>F<CTRL-L>B<CTRL-C><CTRL-K>LG<CTRL-D>","<CTRL-B><CTRL-A>1!<CTRL-L>E<CTRL-C>=<CTRL-S>C<CTRL-C><CTRL-K>LG<CTRL-D>","<CTRL-B><CTRL-A>1 0<CTRL-C>@2<CTRL-C>34<CTRL-D>","<CTRL-B><CTRL-A>1  <CTRL-C> $%<CTRL-C>&'*<CTRL-D>"   
  216. 15006  DATA  "<CTRL-B><CTRL-A>1<CTRL-S>H <CTRL-C><CTRL-K>WT<CTRL-C>LG<CTRL-D>","<CTRL-B><CTRL-A>1<CTRL-S>HT<CTRL-C><CTRL-S>WU<CTRL-C><CTRL-K>LG<CTRL-D>","<CTRL-B><CTRL-A>1 0<CTRL-C>67<CTRL-C>34<CTRL-D>","<CTRL-B><CTRL-A>1  <CTRL-C> $%<CTRL-C>&'-<CTRL-D>"
  217. 20000  REM  <CTRL-C><CTRL-C>      MAGIC IN USE